package com.lagou.code;

import java.util.HashMap;
import java.util.Map;

/**
 * 判断数组中所有的数字是否只出现一次。给定一个数组array，判断数组 array 中是否所有的数字都只 出现过一次。
 * 例如，arr = {1, 2, 3}，输出 YES。又如，arr = {1, 2, 1}，输出 NO。约束时间复杂度为 O(n)。
 * @author yzh
 */
public class CheckArrayShowNumTask {

    public static void main(String[] args) {
        //int[] arr = {1, 2, 3};
        int[] arr = {1, 2, 1};
        System.out.println("数组中所有的数字是否只出现一次: " + checkArrayShowNum(arr));
    }

    /**
     * 判断数组中所有的数字是否只出现一次
     * @param arr 数组
     * @return 判断结果
     */
    public static String checkArrayShowNum(int[] arr) {
        //声明判断结果，默认为YES
        String result = "YES";
        //声明存储元素出现次数的集合
        Map<Integer, Integer> map = new HashMap<>();
        //遍历数组
        for (int i = 0; i < arr.length; i++) {
            Integer value = map.get(arr[i]);
            //如果某元素未出现存到集合中
            if(value == null || value < 1) {
                map.put(arr[i], 1);
            } else {//如果某元素出现停止循环并将判断结果赋值为NO
                result = "NO";
                continue;
            }
        }
        //返回结果
        return result;
    }
}